const list = [
  { 'id': 1, 'pid': 0, 'name': '传智教育' },
  { 'id': 2, 'pid': 1, 'name': '总裁办' },
  { 'id': 3, 'pid': 1, 'name': '行政部' },
  { 'id': 4, 'pid': 1, 'name': '人事部' },
  { 'id': 5, 'pid': 1, 'name': '财务部' },
  { 'id': 6, 'pid': 1, 'name': '技术部' },
  { 'id': 7, 'pid': 1, 'name': '运营部' },
  { 'id': 8, 'pid': 1, 'name': '市场部' },
  { 'id': 9, 'pid': 4, 'name': '财务核算部' },
  { 'id': 10, 'pid': 4, 'name': '税务管理部' },
  { 'id': 11, 'pid': 4, 'name': '薪资管理部' },
  { 'id': 15, 'pid': 7, 'name': '上海事业部' },
  { 'id': 16, 'pid': 7, 'name': '北京事业部' }
]
function list2Tree(list, pid) {
  const res = []
  list.forEach((item) => {
    if (item.pid === pid) {
      // 递归（自己调用自己）
      item.children = list2Tree(list, item.pid)
      res.push(item)
    }
  })
  return res
}
const tree = list2Tree(list, 0) // 输出树状数据结构
// console.log(JSON.stringify(tree, null, 2))
console.log(tree)
// tree
// [
//   {
//     'id': 1,
//     'pid': 0,
//     'name': '传智教育',
//      children : [
//        { 'id': 2, 'pid': 1, 'name': '总裁办' },
//        { 'id': 3, 'pid': 1, 'name': '行政部' },
//        {
//          'id': 4,
//          'pid': 1,
//          'name': '人事部',
//          'children': [
//               { 'id': 9, 'pid': 4, 'name': '财务核算部' },
//               { 'id': 10, 'pid': 4, 'name': '税务管理部' },
//               { 'id': 11, 'pid': 4, 'name': '薪资管理部' },
//           ]
//         },
//        { 'id': 5, 'pid': 1, 'name': '财务部' },
//        { 'id': 6, 'pid': 1, 'name': '技术部' },
//        {
//          'id': 7,
//          'pid': 1,
//          'name': '运营部',
//           children: [
//           { 'id': 15, 'pid': 7, 'name': '上海事业部' },
//           { 'id': 16, 'pid': 7, 'name': '北京事业部' },
//          ]
//         },
//        { 'id': 8, 'pid': 1, 'name': '市场部' },
//     ]
//   },
//  ]
